﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
	struct Student
	{
		char name[20];//姓名
		int age;//年龄
		char sex[5];//性别
		char id[20];//学号
	};//分号不能丢
	return 0;
}
struct  //匿名结构体1
{
	char name[20];//姓名
	int age;//年龄
	char sex[5];//性别
	int id;//学号
}S = {"权权",20,"男",10056};
struct  //匿名结构体2
{
	char name[20];//姓名
	int age;//年龄
	char sex[5];//性别
	int id;//学号
}*p;
typedef struct node
{
  char name[20];//姓名
  int age;//年龄
  char sex[5];//性别
  int id;//学号
}node;//重命名方法一：把struct node 重命名为node
 struct node
{
	char name[20];//姓名
	int age;//年龄
	char sex[5];//性别
	int id;//学号
};
 typedef struct node node;//重命名方法二：把struct node 重命名为node
int main()
{
	//printf("%d %d %s %s\n", S.age, S.id, S.name,S.sex);
	p = &S;
	return 0;
}
//结构体的自引用
typedef struct node
{
	char i;
	struct node* next;
}node;
typedef struct node
{
	char i;
    node* next;
}node;
// 练习1
struct S1
{
	char c1;
	int i;
	char c2;
};
printf("%d\n", sizeof(struct S1));//12
//练习2
struct S2
{
	char c1;
	char c2;
	int i;
};
printf("%d\n", sizeof(struct S2));//8
struct S3
{
	double a;
	char b;
	int c;
};
struct S4
{
	char e;
	struct S3 s3;
	double f;
};
printf("%d\n", sizeof(struct S4));//结构体嵌套问题
#include <stdio.h>
#pragma pack(1)//设置默认对⻬数为1
struct S
{
	char c1;
	int i;
	char c2;
};
#pragma pack()//取消设置的对⻬数，还原为默认
int main()
{
	//输出的结果是什么？
	printf("%d\n", sizeof(struct S));
	return 0;
}